from time import sleep

import allure

from common.airtest.airtest_base import AirtestBase
from common.log.log import log
from config.conf import BASE_DIR
from po.jinhua.applets_po.order_details_page import OrderDetailsPage


class MyOrder:
    """
    个人中心-我的订单页面
    """

    def __init__(self):
        self.drive = AirtestBase()

    @allure.step('个人中心-我的订单列表页：申请发票')
    def request_nvoice(self):
        """
        个人中心-我的订单列表页：申请发票
        """
        try:
            log.info('个人中心-我的订单列表页：申请发票')
            self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/申请发票.png")
        except Exception as e:
            log.error(f'个人中心-我的订单列表页：申请发票出现异常为：{e}')
            raise e

    @allure.step('个人中心-我的订单列表：查看详情')
    def view_details(self):
        """
        个人中心-我的订单列表：查看详情
        """
        try:
            log.info('个人中心-我的订单列表：查看详情')
            self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/查看详情.png")
            return OrderDetailsPage()
        except Exception as e:
            log.error(f'个人中心-我的订单列表：查看详情出现异常为：{e}')
            self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/查看详情_win7.png")
            return OrderDetailsPage()

    @allure.step('个人中心-我的订单列表：立即评价')
    def immediate_evaluation(self):
        """
        个人中心-我的订单页面：立即评价
        """
        try:
            log.info('个人中心-我的订单列表：立即评价')
            self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/立即评价.png")
        except Exception as e:
            log.error(f'个人中心-我的订单列表：立即评价出现异常，为{e}')
            raise e

    @allure.step('切换类型：全部、代付款、待发货、待收货；待评价、已完成')
    def switch_type(self, switch_type):
        """
        切换类型：全部、代付款、待发货、待收货；待评价、已完成
        """
        try:
            if switch_type == '全部':
                log.info('切换到状态：全部')
                self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/全部.png")
                return MyOrder()
            elif switch_type == '待付款':
                log.info('切换到状态：待付款')
                self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/待付款.png")
                return MyOrder()
            elif switch_type == '待发货':
                log.info('切换到状态：待发货')
                self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/待发货.png")
                return MyOrder()
            elif switch_type == '待收货':
                log.info('切换到状态：待收货')
                self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/待收货.png")
                return MyOrder()
            elif switch_type == '待评价':
                log.info('切换到状态：待评价')
                self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/待评价.png")
                return MyOrder()
            elif switch_type == '已完成':
                log.info('切换到状态：已完成')
                self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/全部.png")
                self.drive.up_or_down('right', num=4)
                self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/已完成.png")
                return MyOrder()
        except Exception as e:
            log.error(f'个人中心-我的订单，切换类型过程中出现异常，为{e}')
            raise e

    @allure.step('个人中心-我的订单列表：立即付款')
    def immediate_payment(self, pay):
        """
        个人中心-我的订单页面：立即付款
        pay：余额支付 、 微信支付
        """
        try:
            log.info('个人中心-我的订单列表：立即付款')
            self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/立即付款.png")
            sleep(2)
            self.drive.click_5(BASE_DIR + fr"/element_picture/提交订单页/{pay}.png")
            self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/立即支付.png")
        except Exception as e:
            log.error(f'个人中心-我的订单列表：立即付款出现异常，为{e}')
            raise e

    @allure.step('个人中心-我的订单列表：取消订单')
    def cancel_order(self):
        """
        个人中心-我的订单页面：取消订单
        """
        try:
            log.info('个人中心-我的订单列表：取消订单')
            self.drive.click_5(BASE_DIR + r"/element_picture/我的/我的订单/取消订单.png")
        except Exception as e:
            log.error(f'个人中心-我的订单列表：取消订单出现异常，为{e}')
            raise e
